home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
041-050
/
amok47
/
req
/
reqdemo.mod
< prev
next >
Wrap
Text File
|
1993-11-04
|
9KB
|
315 lines
MODULE Reqdemo;
IMPORT
Req,
Dos,
Requests,
Strings,
SYSTEM,
I:Intuition,
E:Exec,
G:Graphics;
VAR
freqPtr,fontreqPtr: Req.FileRequesterPtr;
gadblocks: ARRAY 9 OF Req.GadgetBlock;
dirstring : Req.DirString;
filestring: Req.FileString;
wholefilePtr : Req.PathStringPtr;
ScP: I.ScreenPtr;
oldWinP,WinP : I.WindowPtr;
IMess : I.IntuiMessage;
IMessPtr: I.IntuiMessagePtr;
gadgetPtr: I.GadgetPtr;
myproc : Dos.ProcessPtr;
gadgetnum : INTEGER;
x,y: LONGINT;
TYPE gadstringType = ARRAY 9,34 OF CHAR;
CONST gadstrings = gadstringType("Show the file requester.",
"Show the color requester.",
"Show a simple text requester.",
"Show a two gadget requester.",
"Show a three gadget requester.",
"Show the font requester.",
"Show the 'get text' requester.",
"Show the 'get number' requester.",
"Exit the demo.");
PROCEDURE OpenAll();
VAR
NSc : I.NewScreen;
Nw : I.NewWindow;
BEGIN
NSc.leftEdge := 0; NSc.topEdge := 0;
NSc.width := G.gfx.normalDisplayColumns;
NSc.height := G.gfx.normalDisplayRows;
NSc.depth := 3; NSc.detailPen := 0;
NSc.blockPen := 1; NSc.viewModes := {G.hires};
NSc.type := I.customScreen;
NSc.defaultTitle := SYSTEM.ADR("Show off requester library.");
NSc.font := NIL;
NSc.gadgets := NIL; NSc.customBitMap := NIL;
ScP := I.OpenScreen(NSc); Requests.Assert(ScP#NIL,"Couldn't open screen!");
Nw.leftEdge := 0; Nw.topEdge := 0;
Nw.width := NSc.width; Nw.height := NSc.height;
Nw.detailPen := -1; Nw.blockPen := -1;
Nw.idcmpFlags := LONGSET{I.gadgetUp};
Nw.flags := LONGSET{I.activate,I.backDrop,I.borderless};
Nw.firstGadget := NIL; Nw.checkMark := NIL;
Nw.screen := ScP; Nw.bitMap := NIL;
Nw.minWidth := 128; Nw.minHeight := 24;
Nw.maxWidth := -1; Nw.maxHeight := -1;
Nw.title := NIL; Nw.type := I.customScreen;
gadgetnum := 0;
REPEAT
x := Nw.leftEdge + 20 + (gadgetnum MOD 2) * (Nw.width DIV 2);
y := (Nw.height-4*20) DIV 2 + (gadgetnum DIV 2) * 20;
Req.LinkGadget(SYSTEM.ADR(gadblocks[gadgetnum]),gadstrings[gadgetnum],Nw, x, y);
gadblocks[gadgetnum].gadget.gadgetID := gadgetnum;
INC(gadgetnum);
UNTIL gadgetnum = 9;
gadgetPtr := SYSTEM.ADR(gadblocks[8].gadget);
gadgetPtr.topEdge := 20;
gadgetPtr.leftEdge := (Nw.width-gadgetPtr.width) DIV 2;
WinP := I.OpenWindow(Nw); Requests.Assert(WinP#NIL,"Couldn't open window!");
END OpenAll;
PROCEDURE ShowFileReq();
BEGIN
freqPtr.dir := SYSTEM.ADR(dirstring);
freqPtr.file := SYSTEM.ADR(filestring);
freqPtr.pathName := wholefilePtr;
freqPtr.flags := LONGSET{Req.infogadget,Req.caching};
freqPtr.dirnamescolor := 2;
freqPtr.devicenamescolor := 2;
freqPtr.show := "*";
IF Req.FileRequest(freqPtr) THEN
Req.SimpleRequest("You selected the file '%s'.",SYSTEM.ADR(wholefilePtr));
ELSE
Req.SimpleRequest("You didn't select a file.",NIL);
END;
END ShowFileReq;
PROCEDURE ShowColorReq();
BEGIN
IF Req.ColorRequester(1) # 0 THEN END;
END ShowColorReq;
PROCEDURE ShowSimpleText();
BEGIN
Req.SimpleRequest(" SimpleRequest() is a tiny bit of\n\
glue code which passes a single text\n\
string (with optional printf() style\n\
formatting) to the TextRequest() routine\n\
in the library. The SimpleRequest()\n\
routine can be easily modified to fit\n\
your own peculiar purposes.",NIL);
END ShowSimpleText;
PROCEDURE ShowTwoGadText();
TYPE yesnoType = ARRAY 2,4 OF CHAR;
CONST yesno = yesnoType("no","yes");
VAR result : INTEGER;
yesnoPtr : POINTER TO ARRAY 4 OF CHAR;
BEGIN
result := Req.TwoGadRequest("Just testing the two gadget requester.",NIL);
yesnoPtr := SYSTEM.ADR(yesno[result]);
Req.SimpleRequest("You responded with a '%s' to this requester.",
SYSTEM.ADR(yesnoPtr));
END ShowTwoGadText;
PROCEDURE ShowThreeGadText();
TYPE responseType = ARRAY 3,66 OF CHAR;
CONST response = responseType("You really should use it.",
"Excellent choice. You have good taste.",
"Oh come on, make up your mind.\nYou won't regret choosing 'yes'.");
VAR myTextStruct : Req.TRStructurePtr;
result : INTEGER;
BEGIN
NEW(myTextStruct);
myTextStruct.text := SYSTEM.ADR(" Would you use the requester library\nin your programs?");
myTextStruct.controls := NIL;
myTextStruct.window := NIL;
myTextStruct.middleText := SYSTEM.ADR("Perhaps...");
myTextStruct.positiveText := SYSTEM.ADR("Oh yeah, for sure!");
myTextStruct.negativeText := SYSTEM.ADR("Methinks not.");
myTextStruct.title := SYSTEM.ADR("Show off text requester.");
myTextStruct.keyMask := {0..15};
myTextStruct.textcolor := 0;
myTextStruct.detailcolor := 0;
myTextStruct.blockcolor := 0;
myTextStruct.versionnumber := 0;
myTextStruct.rfu1 := 0;
myTextStruct.rfu2 := 0;
result := Req.TextRequest(myTextStruct);
Req.SimpleRequest(response[result],NIL);
DISPOSE(myTextStruct);
END ShowThreeGadText;
PROCEDURE ShowFontReq();
TYPE restype = RECORD
fname : Req.FileStringPtr;
size : LONGINT;
style : LONGINT;
END;
VAR fontname : Req.FileString;
dirname : Req.DirString;
result : restype;
BEGIN
dirname := "fonts:";
fontname := "";
fontreqPtr.dir := SYSTEM.ADR(dirname);
fontreqPtr.file := SYSTEM.ADR(fontname);
fontreqPtr.fontnamescolor := 2;
fontreqPtr.flags := LONGSET{Req.caching,Req.getfonts};
IF Req.FileRequest(fontreqPtr) THEN
result.fname := fontreqPtr.file;
result.size := fontreqPtr.fontYSize;
result.style := fontreqPtr.fontStyle;
Req.SimpleRequest("You selected the font '%s',\nsize %ld, type %ld.",
SYSTEM.ADR(result));
ELSE
Req.SimpleRequest("You didn't select a font.",NIL);
END;
END ShowFontReq;
PROCEDURE ShowGetString();
CONST textlength = 75;
VAR mybufferPtr : POINTER TO ARRAY textlength OF CHAR;
BEGIN
NEW(mybufferPtr);
mybufferPtr^ := "The default text.";
IF Req.GetString(mybufferPtr^,"Type anything, then hit return.",
NIL,50,textlength) THEN
Req.SimpleRequest("I'll bet you typed:\n%s",SYSTEM.ADR(mybufferPtr));
ELSE
Req.SimpleRequest("You didn't enter anything!",NIL);
END;
DISPOSE(mybufferPtr);
END ShowGetString;
PROCEDURE ShowGetLong();
VAR mygetlongstructPtr : Req.GetLongStructPtr;
BEGIN
NEW(mygetlongstructPtr);
mygetlongstructPtr.titlebar := SYSTEM.ADR("Enter a number.");
mygetlongstructPtr.defaultval := 1234;
mygetlongstructPtr.minlimit := MIN(LONGINT);
mygetlongstructPtr.maxlimit := MAX(LONGINT);
mygetlongstructPtr.window := NIL;
mygetlongstructPtr.versionnumber := 0;
mygetlongstructPtr.flags := LONGSET{};
mygetlongstructPtr.rfu2 := 0;
IF Req.GetLong(mygetlongstructPtr) THEN
Req.SimpleRequest("You entered the number '%ld'.",SYSTEM.ADR(mygetlongstructPtr.result));
ELSE Req.SimpleRequest("You didn't enter a number.",NIL);
END;
DISPOSE(mygetlongstructPtr);
END ShowGetLong;
BEGIN
OpenAll;
myproc := SYSTEM.VAL(Dos.ProcessPtr,E.FindTask(NIL));
oldWinP := myproc.windowPtr;
myproc.windowPtr := WinP;
NEW(freqPtr);
NEW(fontreqPtr);
NEW(wholefilePtr);
LOOP
LOOP
IMessPtr := E.GetMsg(WinP.userPort);
IF IMessPtr # NIL THEN EXIT END;
E.WaitPort(WinP.userPort);
END;
IMess := IMessPtr^;
E.ReplyMsg(IMessPtr);
gadgetPtr := IMess.iAddress;
gadgetnum := gadgetPtr.gadgetID;
CASE gadgetnum OF
0: ShowFileReq;|
1: ShowColorReq;|
2: ShowSimpleText;|
3: ShowTwoGadText;|
4: ShowThreeGadText;|
5: ShowFontReq;|
6: ShowGetString;|
7: ShowGetLong;|
8: EXIT;|
ELSE
END;
END;
CLOSE
IF freqPtr # NIL THEN Req.PurgeFiles(freqPtr);END;
IF fontreqPtr # NIL THEN Req.PurgeFiles(fontreqPtr);END;
IF freqPtr # NIL THEN DISPOSE(freqPtr);END;
IF fontreqPtr # NIL THEN DISPOSE(fontreqPtr);END;
IF wholefilePtr # NIL THEN DISPOSE(wholefilePtr);END;
IF myproc.windowPtr # NIL THEN myproc.windowPtr := oldWinP;END;
IF WinP # NIL THEN I.CloseWindow(WinP);END;
IF ScP # NIL THEN I.CloseScreen(ScP);END;
END Reqdemo.